display: Remove unneeded getters
authorBenjamin Otte <otte@redhat.com>
Sun, 17 May 2020 03:58:20 +0000 (05:58 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 17 May 2020 05:32:37 +0000 (07:32 +0200)
Applications can use the listmodel instead.

18 files changed:
docs/reference/gdk/gdk4-sections.txt
gdk/broadway/gdkdisplay-broadway.c
gdk/broadway/gdksurface-broadway.c
gdk/gdkdisplay.c
gdk/gdkdisplay.h
gdk/gdkdisplayprivate.h
gdk/gdkmonitor.c
gdk/gdksurface.c
gdk/wayland/gdkdisplay-wayland.c
gdk/wayland/gdksurface-wayland.c
gdk/win32/gdkdisplay-win32.c
gdk/win32/gdkscreen-win32.c
gdk/win32/gdksurface-win32.c
gdk/x11/gdkdisplay-x11.c
gdk/x11/gdksurface-x11.c
gtk/gtkwidget.c
gtk/gtkwindow.c
tests/animated-resizing.c

index be316a39d8561244dac7515b35fcb5e571f255c2..e5ad907320692d0228bd043efc427cd7f6ca23ca 100644 (file)
@@ -92,8 +92,6 @@ gdk_display_get_app_launch_context
 gdk_display_notify_startup_complete
 gdk_display_get_default_seat
 gdk_display_list_seats
-gdk_display_get_n_monitors
-gdk_display_get_monitor
 gdk_display_get_monitors
 gdk_display_get_monitor_at_surface
 gdk_display_get_clipboard
index 9daee6ea15d8c96610b023392de9ac34c904c033..5e06b2749750d967e7c1000c0424925c46384d17 100644 (file)
@@ -319,24 +319,6 @@ gdk_broadway_display_hide_keyboard (GdkBroadwayDisplay *display)
   _gdk_broadway_server_set_show_keyboard (display->server, FALSE);
 }
 
-static int
-gdk_broadway_display_get_n_monitors (GdkDisplay *display)
-{
-  return 1;
-}
-
-static GdkMonitor *
-gdk_broadway_display_get_monitor (GdkDisplay *display,
-                                  int         monitor_num)
-{
-  GdkBroadwayDisplay *broadway_display = GDK_BROADWAY_DISPLAY (display);
-
-  if (monitor_num == 0)
-    return broadway_display->monitor;
-
-  return NULL;
-}
-
 static GListModel *
 gdk_broadway_display_get_monitors (GdkDisplay *display)
 {
@@ -447,8 +429,6 @@ gdk_broadway_display_class_init (GdkBroadwayDisplayClass * class)
   display_class->create_surface = _gdk_broadway_display_create_surface;
   display_class->get_keymap = _gdk_broadway_display_get_keymap;
 
-  display_class->get_n_monitors = gdk_broadway_display_get_n_monitors;
-  display_class->get_monitor = gdk_broadway_display_get_monitor;
   display_class->get_monitors = gdk_broadway_display_get_monitors;
   display_class->get_setting = gdk_broadway_display_get_setting;
 }
index 09eddb5aae7cbddff3da3d270d878a0cb7b5aa2f..677cbdca005266bf2fa052ee2d64f49e24baaf3a 100644 (file)
@@ -776,7 +776,6 @@ gdk_broadway_surface_maximize (GdkSurface *surface)
 {
   GdkBroadwaySurface *impl;
   GdkDisplay *display;
-  GdkMonitor *monitor;
   GdkRectangle geom;
 
   if (GDK_SURFACE_DESTROYED (surface))
@@ -797,8 +796,7 @@ gdk_broadway_surface_maximize (GdkSurface *surface)
   impl->pre_maximize_height = surface->height;
 
   display = gdk_surface_get_display (surface);
-  monitor = gdk_display_get_monitor (display, 0);
-  gdk_monitor_get_geometry (monitor, &geom);
+  gdk_monitor_get_geometry (GDK_BROADWAY_DISPLAY (display)->monitor, &geom);
 
   gdk_broadway_surface_move_resize (surface,
                                     geom.x, geom.y,
index 7749b5e2ce1174715b487c76fd2950b270961555..188e39af0a795c3c1455bc3e6fbc8dd94097ee91 100644 (file)
@@ -1494,47 +1494,6 @@ gdk_display_list_seats (GdkDisplay *display)
   return g_list_copy (display->seats);
 }
 
-/**
- * gdk_display_get_n_monitors:
- * @display: a #GdkDisplay
- *
- * Gets the number of monitors that belong to @display.
- *
- * The returned number is valid until the next emission of the
- * #GdkDisplay::monitor-added or #GdkDisplay::monitor-removed signal.
- *
- * Returns: the number of monitors
- */
-int
-gdk_display_get_n_monitors (GdkDisplay *display)
-{
-  g_return_val_if_fail (GDK_IS_DISPLAY (display), 0);
-
-  if (GDK_DISPLAY_GET_CLASS (display)->get_n_monitors == NULL)
-    return 1;
-
-  return GDK_DISPLAY_GET_CLASS (display)->get_n_monitors (display);
-}
-
-/**
- * gdk_display_get_monitor:
- * @display: a #GdkDisplay
- * @monitor_num: number of the monitor
- *
- * Gets a monitor associated with this display.
- *
- * Returns: (nullable) (transfer none): the #GdkMonitor, or %NULL if
- *    @monitor_num is not a valid monitor number
- */
-GdkMonitor *
-gdk_display_get_monitor (GdkDisplay *display,
-                         gint        monitor_num)
-{
-  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
-
-  return GDK_DISPLAY_GET_CLASS (display)->get_monitor (display, monitor_num);
-}
-
 /**
  * gdk_display_get_monitors:
  * @display: a #GdkDisplay
@@ -1573,7 +1532,8 @@ gdk_display_get_monitor_at_surface (GdkDisplay *display,
                                    GdkSurface  *surface)
 {
   GdkRectangle win;
-  int n_monitors, i;
+  GListModel *monitors;
+  guint i;
   int area = 0;
   GdkMonitor *best = NULL;
   GdkDisplayClass *class;
@@ -1593,14 +1553,14 @@ gdk_display_get_monitor_at_surface (GdkDisplay *display,
   gdk_surface_get_geometry (surface, &win.x, &win.y, &win.width, &win.height);
   gdk_surface_get_origin (surface, &win.x, &win.y);
 
-  n_monitors = gdk_display_get_n_monitors (display);
-  for (i = 0; i < n_monitors; i++)
+  monitors = gdk_display_get_monitors (display);
+  for (i = 0; i < g_list_model_get_n_items (monitors); i++)
     {
       GdkMonitor *monitor;
       GdkRectangle mon, intersect;
       int overlap;
 
-      monitor = gdk_display_get_monitor (display, i);
+      monitor = g_list_model_get_item (monitors, i);
       gdk_monitor_get_geometry (monitor, &mon);
       gdk_rectangle_intersect (&win, &mon, &intersect);
       overlap = intersect.width *intersect.height;
@@ -1609,6 +1569,7 @@ gdk_display_get_monitor_at_surface (GdkDisplay *display,
           area = overlap;
           best = monitor;
         }
+      g_object_unref (monitor);
     }
 
   return best;
index 26918478c25d130fcc97deb79b2e1c5689ad235b..e7d65cf10bf5c1818ba30440558ff75025ae62da 100644 (file)
@@ -106,11 +106,6 @@ GdkSeat * gdk_display_get_default_seat (GdkDisplay *display);
 GDK_AVAILABLE_IN_ALL
 GList   * gdk_display_list_seats       (GdkDisplay *display);
 
-GDK_AVAILABLE_IN_ALL
-int          gdk_display_get_n_monitors        (GdkDisplay *display);
-GDK_AVAILABLE_IN_ALL
-GdkMonitor * gdk_display_get_monitor           (GdkDisplay *display,
-                                                int         monitor_num);
 GDK_AVAILABLE_IN_ALL
 GListModel * gdk_display_get_monitors          (GdkDisplay *self) G_GNUC_PURE;
 GDK_AVAILABLE_IN_ALL
index eeba7a359dead3b531177e4208a5328f1690f818..4e7d6e7ff50a31b96aca3d6f4be24aa129fd7fcc 100644 (file)
@@ -155,9 +155,6 @@ struct _GdkDisplayClass
 
   GdkSeat *              (*get_default_seat)           (GdkDisplay     *display);
 
-  int                    (*get_n_monitors)             (GdkDisplay     *display);
-  GdkMonitor *           (*get_monitor)                (GdkDisplay     *display,
-                                                        int             index);
   GListModel *           (*get_monitors)               (GdkDisplay     *self);
   GdkMonitor *           (*get_monitor_at_surface)     (GdkDisplay     *display,
                                                         GdkSurface      *surface);
index 3e4b3180a03d6f7b442980b7dfcaaaefc9d80874..5157caea0abaf7ec79053c8adb69c0634db0dfe1 100644 (file)
  * @Short_description: Object representing an output
  *
  * GdkMonitor objects represent the individual outputs that are
- * associated with a #GdkDisplay. GdkDisplay has APIs to enumerate
- * monitors with gdk_display_get_n_monitors() and gdk_display_get_monitor(), and
- * to find particular monitors with gdk_display_get_primary_monitor() or
- * gdk_display_get_monitor_at_surface().
+ * associated with a #GdkDisplay. GdkDisplay keeps a #GListModel to enumerate
+ * and monitor monitors with gdk_display_get_monitors().  
+ * You can use gdk_display_get_monitor_at_surface() to find a particular monitor.
  */
 
 /**
index 47a9e7b53a0b2084ea9cc3b2a3831149d162b643..b1fbe2d5769279fa2af5bbf70c5420b8c1df8c72 100644 (file)
@@ -148,11 +148,13 @@ get_monitor_for_rect (GdkDisplay         *display,
   GdkMonitor *monitor;
   GdkRectangle workarea;
   GdkRectangle intersection;
-  gint i;
+  GListModel *monitors;
+  guint i;
 
-  for (i = 0; i < gdk_display_get_n_monitors (display); i++)
+  monitors = gdk_display_get_monitors (display);
+  for (i = 0; i < g_list_model_get_n_items (monitors); i++)
     {
-      monitor = gdk_display_get_monitor (display, i);
+      monitor = g_list_model_get_item (monitors, i);
       gdk_monitor_get_workarea (monitor, &workarea);
 
       if (gdk_rectangle_intersect (&workarea, rect, &intersection))
@@ -163,6 +165,7 @@ get_monitor_for_rect (GdkDisplay         *display,
               best_monitor = monitor;
             }
         }
+      g_object_unref (monitor);
     }
 
   return best_monitor;
index 163423203aa517744b0ac33ef7015f9cd40d999f..f820eea6ca03bd36fc39c91b7903f2c4e27647f2 100644 (file)
@@ -952,31 +952,6 @@ _gdk_wayland_display_get_keymap (GdkDisplay *display)
   return tmp_keymap;
 }
 
-static int
-gdk_wayland_display_get_n_monitors (GdkDisplay *display)
-{
-  GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
-
-  return g_list_model_get_n_items (G_LIST_MODEL (display_wayland->monitors));
-}
-
-static GdkMonitor *
-gdk_wayland_display_get_monitor (GdkDisplay *display,
-                                 int         monitor_num)
-{
-  GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
-  gpointer monitor;
-
-  if (monitor_num < 0)
-    return NULL;
-
-  monitor = g_list_model_get_item (G_LIST_MODEL (display_wayland->monitors), monitor_num);
-  if (monitor)
-    g_object_unref (monitor);
-  
-  return monitor;
-}
-
 static GListModel *
 gdk_wayland_display_get_monitors (GdkDisplay *display)
 {
@@ -1052,8 +1027,6 @@ gdk_wayland_display_class_init (GdkWaylandDisplayClass *class)
 
   display_class->make_gl_context_current = gdk_wayland_display_make_gl_context_current;
 
-  display_class->get_n_monitors = gdk_wayland_display_get_n_monitors;
-  display_class->get_monitor = gdk_wayland_display_get_monitor;
   display_class->get_monitors = gdk_wayland_display_get_monitors;
   display_class->get_monitor_at_surface = gdk_wayland_display_get_monitor_at_surface;
   display_class->get_setting = gdk_wayland_display_get_setting;
index 9155d0b340dec0ec9973c8b7c8e15906bc793fa9..d5754d6577af76cf9ac9fc5cdcc4f144a7b70808 100644 (file)
@@ -744,9 +744,15 @@ _gdk_wayland_display_create_surface (GdkDisplay     *display,
   g_object_ref (surface);
 
   /* More likely to be right than just assuming 1 */
-  if (display_wayland->compositor_version >= WL_SURFACE_HAS_BUFFER_SCALE &&
-      gdk_display_get_n_monitors (display) > 0)
-    impl->scale = gdk_monitor_get_scale_factor (gdk_display_get_monitor (display, 0));
+  if (display_wayland->compositor_version >= WL_SURFACE_HAS_BUFFER_SCALE)
+    {
+      GdkMonitor *monitor = g_list_model_get_item (gdk_display_get_monitors (display), 0);
+      if (monitor)
+        {
+          impl->scale = gdk_monitor_get_scale_factor (monitor);
+          g_object_unref (monitor);
+        }
+    }
 
   gdk_wayland_surface_set_title (surface, get_default_title ());
 
index c44554081578bcab41fb20cd8021ef0e03772758..03d914c023658d2a9f3e6ec606582e74aef304a7 100644 (file)
@@ -949,35 +949,17 @@ gdk_win32_display_notify_startup_complete (GdkDisplay  *display,
   /* nothing */
 }
 
-static int
-gdk_win32_display_get_n_monitors (GdkDisplay *display)
-{
-  GdkWin32Display *win32_display = GDK_WIN32_DISPLAY (display);
-
-  return g_list_model_get_n_items (win32_display->monitors);
-}
-
-
-static GdkMonitor *
-gdk_win32_display_get_monitor (GdkDisplay *display,
-                               int         monitor_num)
-{
-  GdkWin32Display *win32_display = GDK_WIN32_DISPLAY (display);
-  GdkMonitor *monitor;
-
-  monitor = g_list_model_get_item (win32_display->monitors, monitor_num);
-  if (monitor == NULL)
-    return NULL;
-
-  g_object_unref (monitor);
-  return monitor;
-}
-
 GdkMonitor *
 gdk_win32_display_get_primary_monitor (GdkDisplay *display)
 {
-  /* We arrange for the first monitor in the array to also be the primiary monitor */
-  return gdk_win32_display_get_monitor (display, 0);
+  GdkWin32Display *self = GDK_WIN32_DISPLAY (display);
+  GdkMonitor *result;
+
+  /* We arrange for the first monitor in the array to also be the primary monitor */
+  result = g_list_model_get_item (self->monitors, 0);
+  g_object_unref (result);
+
+  return result;
 }
 
 static GListModel *
@@ -1110,8 +1092,6 @@ gdk_win32_display_class_init (GdkWin32DisplayClass *klass)
   display_class->get_keymap = _gdk_win32_display_get_keymap;
   display_class->make_gl_context_current = _gdk_win32_display_make_gl_context_current;
 
-  display_class->get_n_monitors = gdk_win32_display_get_n_monitors;
-  display_class->get_monitor = gdk_win32_display_get_monitor;
   display_class->get_monitors = gdk_win32_display_get_monitors;
 
 #ifdef GDK_RENDERING_VULKAN
index 94c404c819e432589a0a58edf5d94c22c227cf22..4eb87eabfdfbb560e6966747d31ce8433835698c 100644 (file)
@@ -46,23 +46,22 @@ G_DEFINE_TYPE (GdkWin32Screen, gdk_win32_screen, G_TYPE_OBJECT)
 static void
 init_root_window_size (GdkWin32Screen *screen)
 {
-  GdkRectangle result;
+  GdkRectangle result = { 0, };
   int i;
   GdkDisplay *display = _gdk_display;
-  int monitor_count;
+  GListModel *monitors;
   GdkMonitor *monitor;
 
-  monitor_count = gdk_display_get_n_monitors (display);
-  monitor = gdk_display_get_monitor (display, 0);
-  gdk_monitor_get_geometry (monitor, &result);
+  monitors = gdk_display_get_monitors (display);
 
-  for (i = 1; i < monitor_count; i++)
+  for (i = 1; i < g_list_model_get_n_items (monitors); i++)
   {
     GdkRectangle rect;
 
-    monitor = gdk_display_get_monitor (display, i);
+    monitor = g_list_model_get_item (monitors, i);
     gdk_monitor_get_geometry (monitor, &rect);
     gdk_rectangle_union (&result, &rect, &result);
+    g_object_unref (monitor);
   }
 
   screen->width = result.width;
index 7455e8d06554ce8b6bbb54b2e046f7e4eb59d5fa..4b647650b2fd54d90cce08a94e7d148de8534276 100644 (file)
@@ -2051,21 +2051,22 @@ static void
 calculate_aerosnap_regions (GdkW32DragMoveResizeContext *context)
 {
   GdkDisplay *display;
-  gint n_monitors, monitor_idx, other_monitor_idx;
+  GListModel *monitors;
+  gint monitor_idx, other_monitor_idx;
   GdkWin32Surface *impl = GDK_WIN32_SURFACE (context->window);
 #if defined(MORE_AEROSNAP_DEBUGGING)
   gint i;
 #endif
 
   display = gdk_display_get_default ();
-  n_monitors = gdk_display_get_n_monitors (display);
+  monitors = gdk_display_get_monitors (display);
 
 #define _M_UP 0
 #define _M_DOWN 1
 #define _M_LEFT 2
 #define _M_RIGHT 3
 
-  for (monitor_idx = 0; monitor_idx < n_monitors; monitor_idx++)
+  for (monitor_idx = 0; monitor_idx < g_list_model_get_n_items (monitors); monitor_idx++)
     {
       GdkRectangle wa;
       GdkRectangle geometry;
@@ -2076,12 +2077,13 @@ calculate_aerosnap_regions (GdkW32DragMoveResizeContext *context)
       gint thickness, trigger_thickness;
       GdkMonitor *monitor;
 
-      monitor = gdk_display_get_monitor (display, monitor_idx);
+      monitor = g_list_model_get_item (monitors, monitor_idx);
+      g_object_unref (monitors);
       gdk_monitor_get_workarea (monitor, &wa);
       gdk_monitor_get_geometry (monitor, &geometry);
 
       for (other_monitor_idx = 0;
-           other_monitor_idx < n_monitors &&
+           other_monitor_idx < g_list_model_get_n_items (monitors) &&
            (move_edge[_M_UP] || move_edge[_M_LEFT] ||
            move_edge[_M_RIGHT] || resize_edge[_M_DOWN]);
            other_monitor_idx++)
@@ -2092,7 +2094,8 @@ calculate_aerosnap_regions (GdkW32DragMoveResizeContext *context)
           if (other_monitor_idx == monitor_idx)
             continue;
 
-          other_monitor = gdk_display_get_monitor (display, other_monitor_idx);
+          other_monitor = g_list_model_get_item (monitors, other_monitor_idx);
+          g_object_unref (other_monitor);
           gdk_monitor_get_workarea (other_monitor, &other_wa);
 
           /* An edge triggers AeroSnap only if there are no
@@ -2472,6 +2475,7 @@ _gdk_win32_surface_handle_aerosnap (GdkSurface            *window,
 {
   GdkWin32Surface *impl;
   GdkDisplay *display;
+  GListModel *monitors;
   gint n_monitors;
   GdkSurfaceState surface_state = gdk_toplevel_get_state (GDK_TOPLEVEL (window));
   gboolean minimized = surface_state & GDK_SURFACE_STATE_MINIMIZED;
@@ -2481,7 +2485,8 @@ _gdk_win32_surface_handle_aerosnap (GdkSurface            *window,
 
   impl = GDK_WIN32_SURFACE (window);
   display = gdk_surface_get_display (window);
-  n_monitors = gdk_display_get_n_monitors (display);
+  monitors = gdk_display_get_monitors (display);
+  n_monitors = g_list_model_get_n_items (monitors);
   monitor = gdk_display_get_monitor_at_surface (display, window);
 
   if (minimized && maximized)
@@ -2527,10 +2532,15 @@ _gdk_win32_surface_handle_aerosnap (GdkSurface            *window,
        }
       else if (impl->snap_state == GDK_WIN32_AEROSNAP_STATE_HALFLEFT)
        {
+          GdkMonitor *other;
+
          unsnap (window, monitor);
-         snap_right (window,
-                     monitor,
-                     (gdk_win32_display_get_primary_monitor (monitor->display) == monitor) ? monitor : gdk_display_get_monitor (display, n_monitors - 1));
+          if (gdk_win32_display_get_primary_monitor (monitor->display) == monitor)
+            other = g_object_ref (monitor);
+          else
+            other = g_list_model_get_item (monitors, n_monitors - 1);
+         snap_right (window, monitor, other);
+          g_object_unref (other);
        }
       else if (impl->snap_state == GDK_WIN32_AEROSNAP_STATE_HALFRIGHT)
        {
@@ -2553,24 +2563,21 @@ _gdk_win32_surface_handle_aerosnap (GdkSurface            *window,
        }
       else if (impl->snap_state == GDK_WIN32_AEROSNAP_STATE_HALFRIGHT)
        {
+          GdkMonitor *other;
          gint i;
 
          unsnap (window, monitor);
-         if (n_monitors == 1 ||
-             monitor == gdk_display_get_monitor (display, n_monitors - 1))
-           {
-             snap_left (window, monitor, monitor);
-           }
-         else
-           {
-             for (i = 0; i < n_monitors; i++)
-               {
-                 if (monitor == gdk_display_get_monitor (display, i))
-                   break;
-               }
+          for (i = 0; i < n_monitors; i++)
+            {
+              other = g_list_model_get_item (monitors, i);
+              g_object_unref (other);
+              if (monitor == other)
+                break;
+            }
 
-             snap_left (window, monitor, gdk_display_get_monitor (display, i + 1));
-           }
+          other = g_list_model_get_item (monitors, (i + 1) % n_monitors);
+          snap_left (window, monitor, other);
+          g_object_unref (other);
        }
       break;
     case GDK_WIN32_AEROSNAP_COMBO_SHIFTUP:
@@ -3119,18 +3126,19 @@ get_monitor_at_point (GdkDisplay *display,
                       int         x,
                       int         y)
 {
+  GListModel *monitors;
   GdkMonitor *nearest = NULL;
   int nearest_dist = G_MAXINT;
-  int n_monitors, i;
+  guint i;
 
-  n_monitors = gdk_display_get_n_monitors (display);
-  for (i = 0; i < n_monitors; i++)
+  monitors = gdk_display_get_monitors (display);
+  for (i = 0; i < g_list_model_get_n_items (monitors); i++)
     {
       GdkMonitor *monitor;
       GdkRectangle geometry;
       int dist_x, dist_y, dist;
 
-      monitor = gdk_display_get_monitor (display, i);
+      monitor = g_list_model_get_item (monitors, i);
       gdk_monitor_get_geometry (monitor, &geometry);
 
       if (x < geometry.x)
@@ -3175,6 +3183,8 @@ get_monitor_at_point (GdkDisplay *display,
           nearest = monitor;
         }
 
+      g_object_unref (monitor);
+
       if (nearest_dist == 0)
         break;
     }
index ce7a463996e9b9aefdfe6880f693a605436bd3bd..d060e0869083979b7d7a485136a1088dc322d00a 100644 (file)
@@ -2831,34 +2831,6 @@ gdk_x11_display_get_default_seat (GdkDisplay *display)
   return NULL;
 }
 
-static int
-gdk_x11_display_get_n_monitors (GdkDisplay *display)
-{
-  GdkX11Display *x11_display = GDK_X11_DISPLAY (display);
-
-  return g_list_model_get_n_items (G_LIST_MODEL (x11_display->monitors));
-}
-
-
-static GdkMonitor *
-gdk_x11_display_get_monitor (GdkDisplay *display,
-                             int         monitor_num)
-{
-  GdkX11Display *x11_display = GDK_X11_DISPLAY (display);
-  GdkMonitor *monitor;
-
-  if (monitor_num < 0)
-    return NULL;
-
-  monitor = g_list_model_get_item (G_LIST_MODEL (x11_display->monitors), monitor_num);
-  if (monitor)
-    g_object_unref (monitor);
-
-  return monitor;
-
-  return NULL;
-}
-
 static GListModel *
 gdk_x11_display_get_monitors (GdkDisplay *display)
 {
@@ -2987,8 +2959,6 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class)
 
   display_class->get_default_seat = gdk_x11_display_get_default_seat;
 
-  display_class->get_n_monitors = gdk_x11_display_get_n_monitors;
-  display_class->get_monitor = gdk_x11_display_get_monitor;
   display_class->get_monitors = gdk_x11_display_get_monitors;
   display_class->get_setting = gdk_x11_display_get_setting;
   display_class->set_cursor_theme = gdk_x11_display_set_cursor_theme;
index 6b6f08df45a71ead75a5ca26f1eeb3e6b8557f6b..092f72c66328a3fe3c4fe9b111e6b1ec3575e926 100644 (file)
@@ -1605,13 +1605,15 @@ void
 gdk_x11_surface_enter_leave_monitors (GdkSurface *surface)
 {
   GdkDisplay *display = gdk_surface_get_display (surface);
-  int n_monitors, i;
+  GListModel *monitors;
+  guint i;
 
-  n_monitors = gdk_display_get_n_monitors (display);
-  for (i = 0; i < n_monitors; i++)
+  monitors = gdk_display_get_monitors (display);
+  for (i = 0; i < g_list_model_get_n_items (monitors); i++)
     {
-      GdkMonitor *monitor = gdk_display_get_monitor (display, i);
+      GdkMonitor *monitor = g_list_model_get_item (monitors, i);
       gdk_x11_surface_check_monitor (surface, monitor);
+      g_object_unref (monitor);
     }
 }
 
index 315b9dfe1989aca2a190fff22859277b64a788aa..6935877ac27057fb0ba168ae20f2b7a3115366ea 100644 (file)
@@ -6592,9 +6592,13 @@ gtk_widget_get_scale_factor (GtkWidget *widget)
   display = _gtk_widget_get_display (widget);
   if (display)
     {
-      monitor = gdk_display_get_monitor (display, 0);
+      monitor = g_list_model_get_item (gdk_display_get_monitors (display), 0);
       if (monitor)
-        return gdk_monitor_get_scale_factor (monitor);
+        {
+          int result = gdk_monitor_get_scale_factor (monitor);
+          g_object_unref (monitor);
+          return result;
+        }
     }
 
   return 1;
index 5a755ef4500338f09bfaa5782b9a85122eb07c46..0deabfec1606d94563a9d8ce8826b4917920fc5d 100644 (file)
@@ -4101,11 +4101,24 @@ gtk_window_guess_default_size (GtkWindow *window,
   surface = priv->surface;
 
   if (surface)
-    monitor = gdk_display_get_monitor_at_surface (display, surface);
+    {
+      monitor = gdk_display_get_monitor_at_surface (display, surface);
+      gdk_monitor_get_workarea (monitor, &workarea);
+    }
   else
-    monitor = gdk_display_get_monitor (display, 0);
-
-  gdk_monitor_get_workarea (monitor, &workarea);
+    {
+      monitor = g_list_model_get_item (gdk_display_get_monitors (display), 0);
+      if (monitor)
+        {
+          gdk_monitor_get_workarea (monitor, &workarea);
+          g_object_unref (monitor);
+        }
+      else
+        {
+          workarea.width = G_MAXINT;
+          workarea.height = G_MAXINT;
+        }
+    }
 
   *width = workarea.width;
   *height = workarea.height;
index b64559f4399a0f1dd8d2bc97157206c984625ce0..9b5133a88dee750838dac0260899942cc7975b7d 100644 (file)
@@ -176,9 +176,6 @@ main(int argc, char **argv)
 {
   GError *error = NULL;
   GtkWidget *da;
-  GdkDisplay *display;
-  GdkMonitor *monitor;
-  GdkRectangle monitor_bounds;
   gboolean done = FALSE;
 
   GOptionContext *context = g_option_context_new (NULL);
@@ -212,10 +209,6 @@ main(int argc, char **argv)
                     G_CALLBACK (on_map), NULL);
   on_frame (0.);
 
-  display = gtk_widget_get_display (window);
-  monitor = gdk_display_get_monitor (display, 0);
-  gdk_monitor_get_geometry (monitor, &monitor_bounds);
-
   gtk_widget_show (window);
 
   while (!done)